Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in str
.
Input: pattern = "abba", str = "dog cat cat dog" Output: true
Input: pattern = "abba", str = "dog cat cat fish" Output: false
Input: pattern = "aaaa", str = "dog cat cat dog" Output: false
Input: pattern = "abba", str = "dog dog dog dog" Output: false
You may assume pattern
contains only lowercase letters, and str
contains lowercase letters that may be separated by a single space.
classSolution: defwordPattern(self, pattern: str, str: str) ->bool: words=str.split() iflen(pattern) !=len(words): returnFalseforiinrange(len(pattern)): forjinrange(i+1, len(pattern)): if (pattern[j] ==pattern[i]) != (words[j] ==words[i]): returnFalsereturnTrue
classSolution: defwordPattern(self, pattern: str, str: str) ->bool: words=str.split() iflen(pattern) !=len(words): returnFalsematch= {} used=set() forch, woinzip(pattern, words): if (chinmatch) != (woinused): returnFalseelifchnotinmatch: match[ch] =woused.add(wo) elifmatch[ch] !=wo: returnFalsereturnTrue